/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mamesoft.namibiamc.beans;

import com.mamesoft.namibiamc.tools.Utility;
import com.mamesoft.namibiamc.tools.JDBC;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import hirondelle.date4j.DateTime;
import java.io.Serializable;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.ServletContext;
import org.richfaces.event.UploadEvent;
import org.richfaces.model.UploadItem;

public class SuggestionBean implements Serializable {

    private LoginBean loginBean;
    private int id = -1;
    private boolean render = false;
    private String input;
    private String nome;
    private String cognome;
    private String sesso;
    private String dataNascita;
    private String luogoNascita;
    private String indirizzo;
    private String cap;
    private String foto;
    private String email;
    private String telefono;
    private String genitore;
    private String medico;
    private String capoVillaggio;
    private String password;
    private Date dN;
    private int uploadsAvailable = 5;
    private boolean autoUpload = true;
    private boolean useFlash = false;
    private boolean error = false;
    private String webRoot = ((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/");
    private boolean birth = false;

    /** Creates a new instance of SuggestionBoxBean */
    public SuggestionBean() {
        error = false;
        dN = new Date();
        Timestamp t = new Timestamp(getdN().getTime());
        setFoto("/images/baby_profile.jpg");
    }   
    
    public void idListener(ActionEvent event) {

        Integer i = (Integer) event.getComponent().getAttributes().get("input_id");
        setInput(i.toString());
        fetchDatiAnagrafe();
        fetchDatiPaziente();
    }

    private boolean isBadId(Connection c, String id) throws Exception {
        int i = -1;
        try {
            i = Integer.valueOf(id);
        } catch (Exception e) {
            return true;
        }
        return isBadId(c, i);
    }

    private boolean isBadId(Connection c, int id) throws Exception {
        // Connection c = JDBC.connect();
        String q = "SELECT ID FROM medico";
        ResultSet set = JDBC.executeQuery(q, c);
        boolean retval = false;
        while (set.next()) {
            retval = retval || (id == set.getInt("ID"));
        }
        q = "SELECT ID FROM operatore";
        set = JDBC.executeQuery(q, c);
        while (set.next()) {
            retval = retval || (id == set.getInt("ID"));
        }

        retval = retval || (id == getLoginBean().getId());
        return retval;
    }

    private boolean isCapoVillaggioId(Connection c, String id) throws Exception {
        int i = -1;
        try {
            i = Integer.valueOf(id);
        } catch (Exception e) {
            return true;
        }
        return isCapoVillaggioId(c, i);
    }

    private boolean isCapoVillaggioId(Connection c, int id) throws Exception {
        String q = "SELECT ID FROM paziente WHERE capo_villaggio IS NOT NULL ";
        ResultSet set = JDBC.executeQuery(q, c);
        boolean retval = false;
        while (set.next()) {
            retval = retval || (id == set.getInt("ID"));
        }
        return retval;
    }

    private boolean isRegisteredId(Connection c, String id) throws Exception {
        int i = -1;
        try {
            i = Integer.valueOf(id);
        } catch (Exception e) {
            return true;
        }
        return isRegisteredId(c, i);
    }

    private boolean isRegisteredId(Connection c, int id) throws Exception {
        String q = "SELECT ID FROM paziente";
        ResultSet set = JDBC.executeQuery(q, c);
        boolean retval = false;
        while (set.next()) {
            retval = retval || (id == set.getInt("ID"));
        }
        return retval;
    }

    public String modify() {
        try {
            Connection c = JDBC.connect();
            Timestamp t = new Timestamp(getdN().getTime());
            String q = "UPDATE anagrafe "
                    + "SET nome ='" + getNome() + "',"
                    + " cognome='" + getCognome() + "',"
                    + " sesso='" + getSesso() + "',"
                    + " data_nascita='" + t.toString() + "',"
                    + " luogo_nascita='" + getLuogoNascita() + "',"
                    + " indirizzo='" + getIndirizzo() + "',"
                    + " cap='" + getCap() + "'"
                    + " WHERE id='" + getId() + "'";
            JDBC.executeStatement(q, c);
            String cv = getCapoVillaggio().split(" ")[0];
            String g = getGenitore().split(" ")[0];


            if (!isBadId(c, cv) && !isBadId(c, g) && !isCapoVillaggioId(c, cv)) {
                if (cv.equals("0")) {
                    cv = "null";
                } else {
                    cv = "'" + cv + "'";
                }
                if (g.equals("0")) {
                    g = "null";
                } else {
                    g = "'" + g + "'";
                }
                q = "UPDATE paziente "
                        + "SET username ='" + getNome().replace(" ", "") + "." + getCognome().replace(" ", "") + "',"
                        + " password='" + getPassword() + "',"
                        + " foto='" + getFoto() + "',"
                        + " email='" + getEmail() + "',"
                        + " medico='" + getLoginBean().getId() + "',"
                        + " capo_villaggio=" + cv + ","
                        + " genitore=" + g + ","
                        + " telefono='" + getTelefono() + "'"
                        + " WHERE id='" + getId() + "'";
                JDBC.executeStatement(q, c);
                c.close();
                return "success";
            } else {
                setError(true);
                return null;
            }
        } catch (Exception ex) {
            Logger.getLogger(SuggestionBean.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

    private void fetchDatiPaziente() {
        try {
            String q = "SELECT * FROM paziente WHERE id='" + getId() + "'";
            Connection c = JDBC.connect();
            ResultSet set = JDBC.executeQuery(q, c);
            if (set.next()) {
                setEmail(set.getString("email"));
                setTelefono(set.getString("telefono"));
                setFoto(set.getString("foto"));
                String q2 = "SELECT ID,nome,cognome FROM anagrafe WHERE id='" + set.getInt("genitore") + "'";
                ResultSet set2 = JDBC.executeQuery(q2, c);
                if (set2.next()) {
                    setGenitore(set2.getInt("ID") + " " + set2.getString("nome") + " " + set2.getString("cognome"));
                } else {
                    setGenitore("0 ORFANO");
                }
                q2 = "SELECT ID,nome,cognome FROM anagrafe WHERE id='" + set.getInt("medico") + "'";
                set2 = JDBC.executeQuery(q2, c);
                if (set2.next()) {
                    setMedico(set2.getInt("ID") + " " + set2.getString("nome") + " " + set2.getString("cognome"));
                }
                q2 = "SELECT ID,nome,cognome FROM anagrafe WHERE id='" + set.getInt("capo_villaggio") + "'";
                set2 = JDBC.executeQuery(q2, c);
                if (set2.next()) {
                    setCapoVillaggio(set2.getInt("ID") + " " + set2.getString("nome") + " " + set2.getString("cognome"));
                } else {
                    setCapoVillaggio("0 CAPO VILLAGGIO");
                }
                setRender(true);
                set2.close();

            }
            set.close();
            c.close();
        } catch (Exception ex) {
            setRender(false);
        }
    }

    public void listener(UploadEvent event) throws Exception {
        UploadItem item = event.getUploadItem();
        /*File file = new File();
        file.setLength(item.getFile().length());
        file.setName(item.getFile().getName());
        FileReader r = new FileReader(item.getFile());
        
        byte[] b = new byte[(int) item.getFile().length()];
        FileInputStream fileInputStream = new FileInputStream(item.getFile());
        fileInputStream.read(b);
        for (int i = 0; i < b.length; i++) {
        "b[" + i + "] = " + ((int) b[i] < 11 ? "  " : "")
        + b[i] + " , " + " character=(" + (char) b[i] + ")");
        }*/


        Utility.copyfile(item.getFile().getPath(), getWebRoot() + "images/foto_profilo/" + item.hashCode() + ".jpg");
        setFoto("/images/foto_profilo/" + item.hashCode() + ".jpg");
        //file.setData(b);
        //files.add(file);
        setUploadsAvailable(getUploadsAvailable() - 1);
    }

    public int getUploadsAvailable() {
        return uploadsAvailable;
    }

    public void setUploadsAvailable(int uploadsAvailable) {
        this.uploadsAvailable = uploadsAvailable;
    }

    public boolean isAutoUpload() {
        return autoUpload;
    }

    public void setAutoUpload(boolean autoUpload) {
        this.autoUpload = autoUpload;
    }

    public boolean isUseFlash() {
        return useFlash;
    }

    public void setUseFlash(boolean useFlash) {
        this.useFlash = useFlash;
    }

    /**
     * @return the foto
     */
    public String getFoto() {
        return foto;
    }

    /**
     * @param foto the foto to set
     */
    public void setFoto(String foto) {
        this.foto = foto;
    }

    public String register() throws Exception {
        String g, cV;
        Connection c = JDBC.connect();
        boolean isMedicalId = false;
        setMedico(Integer.toString(getLoginBean().getId()));
        if (Integer.parseInt(getGenitore().split(" ")[0]) == 0) {
            g = "null";
        } else {
            g = getGenitore().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, g);
        }

        if (Integer.parseInt(getCapoVillaggio().split(" ")[0]) == 0) {
            cV = "null";
        } else {
            cV = getCapoVillaggio().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, cV);
            isMedicalId = isMedicalId || isCapoVillaggioId(c, cV);

        }
        String username = getNome().toLowerCase().replace(" ", "") + "." + getCognome().toLowerCase().replace(" ", "");
        if (!isMedicalId) {
            try {
                String q = "INSERT INTO paziente (ID, username, password,email,telefono,foto,genitore,medico,capo_villaggio) "
                        + "VALUES ('" + getInput().split(" ")[0] + "','" + username + "' ,"
                        + " '" + getPassword() + "','" + getEmail() + "','" + getTelefono() + "','" + getFoto() + "'," + g + ",'" + getMedico() + "'," + cV + ")";
                JDBC.executeStatement(q, c);
            } catch (Exception ex) {
                throw new SQLException(ex);
            }
            c.close();
            return "success";
        } else {
            setError(true);
            c.close();
            return null;
        }
    }

    public String birthRegister() throws Exception {
        String g, cV;
        Connection c = JDBC.connect();
        boolean isMedicalId = false;
        setMedico(Integer.toString(getLoginBean().getId()));
        if (Integer.parseInt(getGenitore().split(" ")[0]) == 0) {
            g = "null";
        } else {
            g = getGenitore().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, g);
        }

        if (Integer.parseInt(getCapoVillaggio().split(" ")[0]) == 0) {
            cV = "null";
        } else {
            cV = getCapoVillaggio().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, cV);
            isMedicalId = isMedicalId || isCapoVillaggioId(c, cV);

        }
        String username = getNome().toLowerCase().replace(" ", "") + "." + getCognome().toLowerCase().replace(" ", "");
        if (!isMedicalId) {
            try {
                Timestamp t = new Timestamp(getdN().getTime());


                String q = "INSERT INTO anagrafe ( nome, cognome,sesso,data_nascita,luogo_nascita,indirizzo,cap) "
                        + "VALUES ('" + getNome() + "', "
                        + "'" + getCognome() + "', "
                        + "'" + getSesso() + "', "
                        + "'" + t.toString() + "', "
                        + "'" + getLuogoNascita() + "', "
                        + "'" + getIndirizzo() + "', "
                        + "'" + getCap() + "')";

                JDBC.executeStatement(q, c);

                q = "SELECT ID FROM anagrafe WHERE "
                        + "nome='" + getNome() + "' AND "
                        + "cognome='" + getCognome() + "' AND "
                        + "sesso='" + getSesso() + "' AND "
                        + "data_nascita='" + t.toString() + "' AND "
                        + "luogo_nascita='" + getLuogoNascita() + "' AND "
                        + "indirizzo='" + getIndirizzo() + "' AND "
                        + "cap='" + getCap() + "'";

                ResultSet set = JDBC.executeQuery(q, c);
                set.next();
                id = set.getInt("ID");
                q = "INSERT INTO paziente (ID, username, password,email,telefono,foto,genitore,medico,capo_villaggio) "
                        + "VALUES ('" + id + "','" + username + "' ,"
                        + " '" + getPassword() + "','" + getEmail() + "','" + getTelefono() + "','" + getFoto() + "'," + g + ",'" + getMedico() + "'," + cV + ")";
                JDBC.executeStatement(q, c);

                q = "SELECT descrizione,valore FROM scaletta WHERE tipo='nascita'";
                set = JDBC.executeQuery(q, c);
                while (set.next()) {
                    Timestamp dv = new Timestamp(dN.getTime() + set.getInt("valore") * 1000);
                    q = "INSERT INTO cartella (pID,mID,data,tipo_visita,descrizione,is_fatta) "
                            + "VALUES ('" + id + "', "
                            + "'" + getLoginBean().getId() + "', "
                            + "'" + dv + "', "
                            + "'vaccino', "
                            + "'" + set.getString("descrizione") + "', "
                            + "'F')";
                    JDBC.executeStatement(q, c);
                }
                set.close();
            } catch (Exception ex) {
                throw new SQLException(ex);
            }
            c.close();
            return "success";
        } else {
            setError(true);
            c.close();
            return null;
        }
    }

    public String operatoreBirthRegister() throws Exception {
        String g, cV, m;
        Connection c = JDBC.connect();
        boolean isMedicalId = false;

        if (Integer.parseInt(getMedico().split(" ")[0]) == 0) {
            m = "null";
        } else {
            m = getMedico().split(" ")[0];
        }

        if (Integer.parseInt(getGenitore().split(" ")[0]) == 0) {
            g = "null";
        } else {
            g = getGenitore().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, g);
        }

        if (Integer.parseInt(getCapoVillaggio().split(" ")[0]) == 0) {
            cV = "null";
        } else {
            cV = getCapoVillaggio().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, cV);
            isMedicalId = isMedicalId || isCapoVillaggioId(c, cV);

        }
        String username = getNome().toLowerCase().replace(" ", "") + "." + getCognome().toLowerCase().replace(" ", "");
        if (!isMedicalId) {
            try {
                Timestamp t = new Timestamp(getdN().getTime());


                String q = "INSERT INTO anagrafe ( nome, cognome,sesso,data_nascita,luogo_nascita,indirizzo,cap) "
                        + "VALUES ('" + getNome() + "', "
                        + "'" + getCognome() + "', "
                        + "'" + getSesso() + "', "
                        + "'" + t.toString() + "', "
                        + "'" + getLuogoNascita() + "', "
                        + "'" + getIndirizzo() + "', "
                        + "'" + getCap() + "')";

                JDBC.executeStatement(q, c);

                q = "SELECT ID FROM anagrafe WHERE "
                        + "nome='" + getNome() + "' AND "
                        + "cognome='" + getCognome() + "' AND "
                        + "sesso='" + getSesso() + "' AND "
                        + "data_nascita='" + t.toString() + "' AND "
                        + "luogo_nascita='" + getLuogoNascita() + "' AND "
                        + "indirizzo='" + getIndirizzo() + "' AND "
                        + "cap='" + getCap() + "'";

                ResultSet set = JDBC.executeQuery(q, c);
                set.next();
                id = set.getInt("ID");
                q = "INSERT INTO paziente (ID, username, password,email,telefono,foto,genitore,medico,capo_villaggio) "
                        + "VALUES ('" + id + "','" + username + "' ,"
                        + " '" + getPassword() + "','" + getEmail() + "','" + getTelefono() + "','" + getFoto() + "'," + g + ",'" + m + "'," + cV + ")";
                JDBC.executeStatement(q, c);

                q = "SELECT descrizione,valore FROM scaletta WHERE tipo='nascita'";
                set = JDBC.executeQuery(q, c);
                while (set.next()) {
                    Timestamp dv = new Timestamp(dN.getTime() + set.getInt("valore") * 1000);
                    q = "INSERT INTO cartella (pID,mID,data,tipo_visita,descrizione,is_fatta) "
                            + "VALUES ('" + id + "', "
                            + "'" + m + "', "
                            + "'" + dv + "', "
                            + "'vaccino', "
                            + "'" + set.getString("descrizione") + "', "
                            + "'F')";
                    JDBC.executeStatement(q, c);
                }
                set.close();
            } catch (Exception ex) {
                throw new SQLException(ex);
            }
            c.close();
            return "success";
        } else {
            setError(true);
            c.close();
            return null;
        }
    }

    public String operatoreRegister() throws Exception {
        String m, g, cV;
        Connection c = JDBC.connect();
        boolean isMedicalId = false;

        if (Integer.parseInt(getMedico().split(" ")[0]) == 0) {
            m = "null";
        } else {
            m = getMedico().split(" ")[0];
        }

        if (Integer.parseInt(getGenitore().split(" ")[0]) == 0) {
            g = "null";
        } else {
            g = getGenitore().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, g);
        }

        if (Integer.parseInt(getCapoVillaggio().split(" ")[0]) == 0) {
            cV = "null";
        } else {
            cV = getCapoVillaggio().split(" ")[0];
            isMedicalId = isMedicalId || isBadId(c, cV);
            isMedicalId = isMedicalId || isCapoVillaggioId(c, cV);
        }
        String username = getNome().toLowerCase().replace(" ", "") + "." + getCognome().toLowerCase().replace(" ", "");
        if (!isMedicalId) {
            try {
                String q = "INSERT INTO paziente (ID, username, password,email,telefono,foto,genitore,medico,capo_villaggio) "
                        + "VALUES ('" + getInput().split(" ")[0] + "','" + username + "' ,"
                        + " '" + getPassword() + "','" + getEmail() + "','" + getTelefono() + "','" + getFoto() + "'," + g + ",'" + m + "'," + cV + ")";
                setError(false);
                JDBC.executeStatement(q, c);
            } catch (Exception ex) {
                setError(true);
            }
            c.close();
            return "success";
        } else {
            setError(true);
            c.close();
            return null;
        }
    }

    public void action() {
        try {
            Connection c = JDBC.connect();
            setId((int) Integer.valueOf(getInput().split(" ")[0]));
            if (!isBadId(c, id) && !isRegisteredId(c, id)) {
                String q = "SELECT * FROM anagrafe WHERE id='" + getId() + "'";
                ResultSet set = JDBC.executeQuery(q, c);
                if (set.next()) {
                    setNome(set.getString("nome"));
                    setCognome(set.getString("cognome"));


                    Timestamp t = set.getTimestamp("data_nascita");
                    setdN(new Date(t.getTime()));
                    DateTime d = new DateTime(t.toString());
                    setDataNascita(d.format("DD/MM/YYYY"));

                    setSesso(set.getString("sesso"));
                    setFoto("/images/profile_" + getSesso().toLowerCase() + ".gif");
                    setLuogoNascita(set.getString("luogo_nascita"));
                    setIndirizzo(set.getString("indirizzo"));
                    setCap(set.getString("cap"));
                    set.close();
                    setRender(true);
                    setError(false);
                }
            } else {
                setError(true);
            }
            c.close();
        } catch (Exception ex) {
            setRender(false);
        }

    }

        public void fetchDatiAnagrafe() {
        try {
            Connection c = JDBC.connect();
            setId((int) Integer.valueOf(getInput().split(" ")[0]));
            if (!isBadId(c, id)) {
                String q = "SELECT * FROM anagrafe WHERE id='" + getId() + "'";
                ResultSet set = JDBC.executeQuery(q, c);
                if (set.next()) {
                    setNome(set.getString("nome"));
                    setCognome(set.getString("cognome"));


                    Timestamp t = set.getTimestamp("data_nascita");
                    setdN(new Date(t.getTime()));
                    DateTime d = new DateTime(t.toString());
                    setDataNascita(d.format("DD/MM/YYYY"));

                    setSesso(set.getString("sesso"));
                    setFoto("/images/profile_" + getSesso().toLowerCase() + ".gif");
                    setLuogoNascita(set.getString("luogo_nascita"));
                    setIndirizzo(set.getString("indirizzo"));
                    setCap(set.getString("cap"));
                    set.close();
                    setRender(true);
                    setError(false);
                }
            } else {
                setError(true);
            }
            c.close();
        } catch (Exception ex) {
            setRender(false);
        }

    }

    /**
     * @return the render
     */
    public boolean isRender() {
        return render;
    }

    /**
     * @param render the render to set
     */
    public void setRender(boolean render) {
        this.render = render;
    }

    /**
     * @return the input
     */
    public String getInput() {
        return input;
    }

    /**
     * @param input the input to set
     */
    public void setInput(String input) {
        this.input = input;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the cognome
     */
    public String getCognome() {
        return cognome;
    }

    /**
     * @param cognome the cognome to set
     */
    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    /**
     * @return the dataNascita
     */
    public String getDataNascita() {
        return dataNascita;
    }

    /**
     * @param dataNascita the dataNascita to set
     */
    public void setDataNascita(String dataNascita) {
        this.dataNascita = dataNascita;
    }

    /**
     * @return the luogoNascita
     */
    public String getLuogoNascita() {
        return luogoNascita;
    }

    /**
     * @param luogoNascita the luogoNascita to set
     */
    public void setLuogoNascita(String luogoNascita) {
        this.luogoNascita = luogoNascita;
    }

    /**
     * @return the indirizzo
     */
    public String getIndirizzo() {
        return indirizzo;
    }

    /**
     * @param indirizzo the indirizzo to set
     */
    public void setIndirizzo(String indirizzo) {
        this.indirizzo = indirizzo;
    }

    /**
     * @return the cap
     */
    public String getCap() {
        return cap;
    }

    /**
     * @param cap the cap to set
     */
    public void setCap(String cap) {
        this.cap = cap;
    }

    /**
     * @return the sesso
     */
    public String getSesso() {
        return sesso;
    }

    /**
     * @param sesso the sesso to set
     */
    public void setSesso(String sesso) {
        this.sesso = sesso;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the telefono
     */
    public String getTelefono() {
        return telefono;
    }

    /**
     * @param telefono the telefono to set
     */
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    /**
     * @return the genitore
     */
    public String getGenitore() {
        return genitore;
    }

    /**
     * @param genitore the genitore to set
     */
    public void setGenitore(String genitore) {
        this.genitore = genitore;
    }

    /**
     * @return the medico
     */
    public String getMedico() {
        return medico;
    }

    /**
     * @param medico the medico to set
     */
    public void setMedico(String medico) {
        this.medico = medico;
    }

    /**
     * @return the capoVillaggio
     */
    public String getCapoVillaggio() {
        return capoVillaggio;
    }

    /**
     * @param capoVillaggio the capoVillaggio to set
     */
    public void setCapoVillaggio(String capoVillaggio) {
        this.capoVillaggio = capoVillaggio;
    }

    /**
     * @return the webRoot
     */
    public String getWebRoot() {
        return webRoot;
    }

    /**
     * @param webRoot the webRoot to set
     */
    public void setWebRoot(String webRoot) {
        this.webRoot = webRoot;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * @return the loginBean
     */
    public LoginBean getLoginBean() {
        return loginBean;
    }

    /**
     * @param loginBean the loginBean to set
     */
    public void setLoginBean(LoginBean loginBean) {
        this.loginBean = loginBean;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the dN
     */
    public Date getdN() {
        return dN;
    }

    /**
     * @param dN the dN to set
     */
    public void setdN(Date dN) {
        this.dN = dN;
    }

    /**
     * @return the error
     */
    public boolean isError() {
        return error;
    }

    /**
     * @param error the error to set
     */
    public void setError(boolean error) {
        this.error = error;
    }

    /**
     * @return the birth
     */
    public boolean isBirth() {
        return birth;
    }

    /**
     * @param birth the birth to set
     */
    public void setBirth(boolean birth) {
        this.birth = birth;
    }
}
